LSEEK

               
#include <stdio.h>   требуется  только  для объявления функций.
long lseek (stream, offset, origin);
int handle;           handle, ссылающийся на  открытый файл
long offset;          число байтов из origin.
int оrigin;           начальная позиция.

Описание.
Функция lseek передвигает указатель на файл (если он есть), связанный с handle , на новое место расположения, которое является байтами offset из origin .
Следующая операция в файле выполняется на новом месте расположения.
Аргумент origin может быть одной из следующих констант, определенных в <stdio.h>.

            ORIGIN                ОПРЕДЕЛЕНИЕ
          
            SEEK-SET              начало файла.
            
            SEEK-CUR              текущая позиция указателя на файл.
            
            SEEK-END              конец файла.
            

Функция lseek используется для перемещения указателя в любое место файла. Указатель должен быть размещен вне конца файла. Однако попытка расположить указатель на файл в начале файла обычно приводит к ошибке.

Возвращаемое значение.
Функция lseek возвращает разветвление origin в байтах, оп ределенное как значение от новой позиции до начала файла. Возвращаемое значение -1 указывает на ошибку; errno устанавливается в одно из следующих значений:

            ВЕЛИЧИНА                ЕЕ СМЫСЛОВОЕ  ЗНАЧЕНИЕ
            
            EBADF               Неверный handle-р файла.
            
            ENIVAL              Неверное значение для origin   или
                                позиция,  определенная  при помощи
                                offset,  находится  перед  началом
                                файла.

Для устройств, не приспособленных для поиска (seek ), (таких как терминал и печать), возвращаемое значение неопределенно.

Пример:

            #include <io.h>
            #include <fcntl.h>
            #include <stdlib.h>
            int fh;
            long position;
            fh = open("data", O_RDONLY);
            .
            .
            .
            /* 0 - разветвление от начала */
            position = lseek (fh, 0L, SEEK_SET);
            if (position == -1L)
               perror("lseek to beginning failed");
            .
            .
            .
            /* находит текущую позицию */
            position = lseek (fh, 0L, SEEK_CUR);
            if (position == -1L)
               perror("lseek to current position failed");
            .
            .
            .
            /* выполняет до конца файла */
            if (position == -1L)
               perror("lseek to end failed");.
Hosted by uCoz